fail_fast: true

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v4.4.0
  hooks:
    - id: check-ast   # checks Python syntax
    - id: check-json  # checks JSON syntax
    - id: check-merge-conflict  # checks for no merge conflict strings
    - id: check-shebang-scripts-are-executable  # checks all shell scripts have executable permissions
    - id: check-toml  # checks TOML syntax
    - id: check-yaml  # checks YAML syntax
    - id: end-of-file-fixer  # checks there is a newline at the end of the file  # FIXME: pydoc-markdown conflicts with this
    - id: mixed-line-ending  # normalizes line endings
    - id: no-commit-to-branch  # prevents committing to main
    - id: trailing-whitespace  # trims trailing whitespace
      args: [--markdown-linebreak-ext=md]

- repo: https://github.com/psf/black
  rev: 23.9.1
  hooks:
  - id: black-jupyter

- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.0.290
  hooks:
  - id: ruff
    args: [--fix, --exit-non-zero-on-fix]

- repo: https://github.com/codespell-project/codespell
  rev: v2.2.5
  hooks:
  - id: codespell
    additional_dependencies:
      - tomli

- repo: https://github.com/rhysd/actionlint
  rev: v1.6.25
  hooks:
  - id: actionlint-docker
    args: ["-ignore", "SC2102"]

# TODO we can make pylint run at this stage too, once their execution gets normalized
